import React from 'react';
import PropTypes from 'prop-types';
import {requireNativeComponent, View} from 'react-native';

let AndroidEditText = requireNativeComponent(
    'AndroidEditText',                  // 第一个参数是android端的SimpleViewManager对外的名称
    CustomeEdit,                        // 第二个参数是一个描述组件接口的对象(本例对Android原生组件进一步进行了封装)
    {
        nativeOnly: {onChange: true}
    }
);

class CustomeEdit extends React.Component {
    constructor(props) {
        super(props);
        //如果使用ES6编码 且 自定义方法里面需要使用到this .这时需要绑定this,否则报错
        this._onChange = this._onChange.bind(this);
    }

    _onChange(event: Event) {
        console.info('_onChange3', event.nativeEvent.text + '');
    };

    //{...this.props}: 将传给本View(CustomeEdit)的属性, 级联传给底层的原生组件(被封装的android组件)
    render() {
        return <AndroidEditText {...this.props} onChange={this._onChange} />;
    };

}

/** 这里只是一个参数校验器 */
CustomeEdit.propTypes = {
    setText : PropTypes.func,
    text    : PropTypes.string,
    ...View.propTypes,          // 包含默认的View的属性
};

module.exports = CustomeEdit;


